const fs = require('fs')
const path = require('path')

// 获取api文件内容
const apiContents = fs.readFileSync(path.join(__dirname, './config/api.js'), 'utf-8')
// 获取接口部分字符串
const apiStrings = apiContents.split('module.exports = ')[1]
// 获取接口key列表
const apiKeys = apiStrings.match(/ (.*): `/g).map(item => item.replace(/[ :`]/g, ''))
// 统计接口key使用次数
const apiTotals = apiKeys.reduce((t, c) => {
  t[c] = (t[c] || 0) + 1
  return t
}, {})
// 接口key重复过滤
const apiDoubles = Object.entries(apiTotals).filter(item => item[1] > 1)

// 接口key有重复，抛出错误
if (apiDoubles.length) {
  // 接口key重复提示
  const apiDoublesTip = apiDoubles.reduce((t, c) => {
    t += `\n  ${c[0]}重复${c[1]}次`
    return t
  }, 'api接口key重复')
  
  throw Error(apiDoublesTip)
} else {
  console.log('api接口key验证通过')
}